/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package SubsistemaPaciente.Fichas;

import clienteSandraParada.Login;
import java.awt.Color;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Jacqueline
 */
public class PanelPodologia extends javax.swing.JPanel {

    FichaPodologa fichaPodo;
    static Long id;
    static int fila;

    /**
     * Creates new form ContenidoCaja
     */
    public PanelPodologia() {
        initComponents();
        if(Login.getUser().getTipoCuenta().equals("Administrador")||Login.getUser().getTipoCuenta().equals("Secretaria")){
            cargarTodasLasFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
        }
        else{
            cargarFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
        }
        this.ocultarNumeroFicha();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        dialogoEliminarFicha = new javax.swing.JDialog();
        jPanel8 = new javax.swing.JPanel();
        etiquetaEliminar = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        botonSiEliminar = new javax.swing.JButton();
        botonNoEliminar = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jScrollPane4 = new javax.swing.JScrollPane();
        tablaFichasPodo = new javax.swing.JTable();
        datosABuscar = new javax.swing.JTextField();
        jPanel6 = new javax.swing.JPanel();
        etiquetaMensajeria = new javax.swing.JLabel();
        jPanel7 = new javax.swing.JPanel();
        botonModificar = new javax.swing.JButton();
        botonEliminar = new javax.swing.JButton();
        botonVer = new javax.swing.JButton();

        dialogoEliminarFicha.setTitle("Eliminar paciente");
        dialogoEliminarFicha.setMinimumSize(new java.awt.Dimension(527, 190));
        dialogoEliminarFicha.setModal(true);
        dialogoEliminarFicha.setResizable(false);

        etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera la ficha seleccionada?");

        jLabel20.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Papelera.png"))); // NOI18N

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel20)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(etiquetaEliminar)
                .addContainerGap(28, Short.MAX_VALUE))
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel20)
                    .addGroup(jPanel8Layout.createSequentialGroup()
                        .addGap(9, 9, 9)
                        .addComponent(etiquetaEliminar)))
                .addContainerGap(24, Short.MAX_VALUE))
        );

        botonSiEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Aceptar.png"))); // NOI18N
        botonSiEliminar.setText("Si");
        botonSiEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSiEliminarActionPerformed(evt);
            }
        });

        botonNoEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Cancelar.png"))); // NOI18N
        botonNoEliminar.setText("No");
        botonNoEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonNoEliminarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout dialogoEliminarFichaLayout = new javax.swing.GroupLayout(dialogoEliminarFicha.getContentPane());
        dialogoEliminarFicha.getContentPane().setLayout(dialogoEliminarFichaLayout);
        dialogoEliminarFichaLayout.setHorizontalGroup(
            dialogoEliminarFichaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dialogoEliminarFichaLayout.createSequentialGroup()
                .addContainerGap(212, Short.MAX_VALUE)
                .addComponent(botonSiEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonNoEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        dialogoEliminarFichaLayout.setVerticalGroup(
            dialogoEliminarFichaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dialogoEliminarFichaLayout.createSequentialGroup()
                .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(dialogoEliminarFichaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonSiEliminar)
                    .addComponent(botonNoEliminar))
                .addGap(0, 15, Short.MAX_VALUE))
        );

        setPreferredSize(new java.awt.Dimension(953, 603));

        jPanel5.setBackground(new java.awt.Color(255, 255, 255));
        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1), "Fichas Podología", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Tahoma", 0, 36))); // NOI18N

        jLabel4.setText("Buscar ");

        tablaFichasPodo.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "ID", "Rut", "Nombre", "Número calzado", "Medicamentos"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Long.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tablaFichasPodo.getTableHeader().setReorderingAllowed(false);
        tablaFichasPodo.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaFichasPodoMouseClicked(evt);
            }
        });
        jScrollPane4.setViewportView(tablaFichasPodo);

        datosABuscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                datosABuscarKeyReleased(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addGap(728, 728, 728)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addComponent(jScrollPane4)
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)
                .addGap(59, 59, 59))
        );

        jPanel6.setBackground(new java.awt.Color(255, 255, 255));

        etiquetaMensajeria.setText("Área  de mensajería");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(etiquetaMensajeria, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(334, 334, 334))
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(etiquetaMensajeria, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
        );

        jPanel7.setBackground(new java.awt.Color(255, 255, 255));

        botonModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Edit.png"))); // NOI18N
        botonModificar.setText("Modificar");
        botonModificar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonModificarActionPerformed(evt);
            }
        });

        botonEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/delete_32x32x32.png"))); // NOI18N
        botonEliminar.setText("Eliminar");
        botonEliminar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonEliminar.setMaximumSize(new java.awt.Dimension(97, 43));
        botonEliminar.setMinimumSize(new java.awt.Dimension(97, 43));
        botonEliminar.setPreferredSize(new java.awt.Dimension(97, 43));
        botonEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonEliminarActionPerformed(evt);
            }
        });

        botonVer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Previsualizar.png"))); // NOI18N
        botonVer.setText("Ver");
        botonVer.setMaximumSize(new java.awt.Dimension(97, 43));
        botonVer.setMinimumSize(new java.awt.Dimension(97, 43));
        botonVer.setPreferredSize(new java.awt.Dimension(97, 43));
        botonVer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonVerActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(botonModificar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonVer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {botonEliminar, botonModificar, botonVer});

        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(botonVer, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(botonEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(botonModificar)))
                .addContainerGap())
        );

        jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {botonEliminar, botonModificar, botonVer});

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void botonModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonModificarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isModificarFichaPodologia()) {
            // Modificar panel principal
            this.normalizarMensajeria();
            int[] filasSelec = tablaFichasPodo.getSelectedRows();
            if (filasSelec.length == 1) {
                fichaPodo = new FichaPodologa(null, true, this);
                fichaPodo.limpiarFormularioPodo();
                fichaPodo.setTitle("Modificar Ficha Podologia");
                //Solo puede seleccionar una fila de la tabla de fichas principal
                fila = filasSelec[0];
                fichaPodo.fila = filasSelec[0];
                Long fi = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                Evolucion.ficha = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                FichaPodologa.FichaFiltrar = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                service.FichaPodologa fichaP = buscarFichaPodologa(fi);
                /*se guarda el Id para saber que ficha clinica debo modificar
                en la base de datos*/
                fichaPodo.id = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                fichaPodo.llenarFormularioPodoModificar(fichaP);
                fichaPodo.habilitarCamposFormularioPodo(true);
                //llenar datos evoluciones
                fichaPodo.limpiarTablaEvoluciones();
                fichaPodo.llenardatosEvoluciones(fi);
                //hacer visible el formulario
                fichaPodo.ocultarAsteriscosFormulario(false);
                fichaPodo.configurarBotones("modificar");
                fichaPodo.setSize(1105, 530);
                fichaPodo.setLocationRelativeTo(null);
                fichaPodo.setVisible(true);
            } else {
                this.etiquetaMensajeria.setText("No se ha seleccionado una Ficha a modificar");
                etiquetaMensajeria.setForeground(Color.red);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonModificarActionPerformed

    private void botonEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonEliminarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isEliminarFichaPodologia()) {
            // Eliminar panel principal
            this.normalizarMensajeria();
            int[] filas = tablaFichasPodo.getSelectedRows();
            if (filas.length > 0) {
                if (filas.length == 1) {
                    etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera la ficha seleccionada?");
                } else {
                    etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera las fichas seleccionadas?");
                }
                dialogoEliminarFicha.setLocationRelativeTo(null);
                dialogoEliminarFicha.setVisible(true);
            } else {
                etiquetaMensajeria.setText("No se ha seleccionado una ficha para eliminar");
                etiquetaMensajeria.setForeground(Color.red);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonEliminarActionPerformed

    private void botonVerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonVerActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isVerFichaPodologia()) {
            // ver panel principal
            this.normalizarMensajeria();
            int[] filasSelec = tablaFichasPodo.getSelectedRows();
            if (filasSelec.length == 1) {
                fichaPodo = new FichaPodologa(null, true, this);
                fichaPodo.limpiarFormularioPodo();
                fichaPodo.setTitle("Ver Ficha Podologia");
                fichaPodo.configurarBotones("imprimir");
                //Solo puede seleccionar una fila de la tabla de fichas principal
                fila = filasSelec[0];
                service.FichaPodologa ficha = buscarFicha((Long) this.tablaFichasPodo.getValueAt(fila, 0));
                /*se guarda el Id para saber que ficha clinica debo modificar
                en la base de datos*/
                fichaPodo.id = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                fichaPodo.llenarFormularioPodoModificar(ficha);
                fichaPodo.habilitarCamposFormularioPodo(false);
                fichaPodo.habilitarCamposEvolucion(true);
                //llenar datos evoluciones
                fichaPodo.limpiarTablaEvoluciones();
                fichaPodo.llenardatosEvoluciones((Long) this.tablaFichasPodo.getValueAt(fila, 0));
                fichaPodo.ocultarAsteriscosFormulario(true);
                fichaPodo.setSize(1105, 530);
                fichaPodo.setLocationRelativeTo(null);
                fichaPodo.setVisible(true);
            } else {
                this.etiquetaMensajeria.setText("Debe seleccionar solo una fila.");
                etiquetaMensajeria.setForeground(Color.red);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonVerActionPerformed

    private void botonSiEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonSiEliminarActionPerformed
        //Eliminar las fichas que ha seleccionadas
        int[] filasSelec = tablaFichasPodo.getSelectedRows();
        if (filasSelec.length == 1) {
            service.FichaPodologa p = (service.FichaPodologa) cargarFichaPodologa(((Long) tablaFichasPodo.getValueAt(filasSelec[0], 0)));
            p.setActivo(false);
            modificarFicha(p);
            String anterior = "No aplica";
            String posterior = "Rut profesional: " + p.getPaciente() + "\n" + "Rut paciente: " + p.getPaciente();
            registrar(Login.getUser(), "Ficha kinesiología", "Eliminó ficha a profesional:" + p.getProfesional() + "de paciente :" + p.getPaciente(), anterior, posterior);
        } else {
            for (int i = 0; i < filasSelec.length; i++) {
                service.FichaPodologa p = (service.FichaPodologa) cargarFichaPodologa(((Long) tablaFichasPodo.getValueAt(filasSelec[i], 0)));
                p.setActivo(false);
                modificarFicha(p);
                String anterior = "No aplica";
                String posterior = "Rut profesional: " + p.getPaciente() + "\n" + "Rut paciente: " + p.getPaciente();
                registrar(Login.getUser(), "Ficha kinesiología", "Eliminó ficha rut profesional" + p.getProfesional(), anterior, posterior);
            }
        }
        this.cargarFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
        this.dialogoEliminarFicha.dispose();
}//GEN-LAST:event_botonSiEliminarActionPerformed

    private void botonNoEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonNoEliminarActionPerformed
        this.dialogoEliminarFicha.dispose();
}//GEN-LAST:event_botonNoEliminarActionPerformed

    private void datosABuscarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datosABuscarKeyReleased
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isBuscarFichaPodologia()) {
            if (!datosABuscar.getText().equals("")) {
                if(Login.getUser().getTipoCuenta().equals("Administrador")||Login.getUser().getTipoCuenta().equals("Secretaria")){
                    cargarTodasLasFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
                }
                else{
                    cargarFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
                }
                actualizarTablaBusqueda(datosABuscar.getText());
            } else {
                if(Login.getUser().getTipoCuenta().equals("Administrador")||Login.getUser().getTipoCuenta().equals("Secretaria")){
                    cargarTodasLasFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
                }
                else{
                    cargarFichas((java.util.List<service.FichaPodologa>) listarFichasPodo());
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_datosABuscarKeyReleased

     public void actualizarTablaBusqueda(String buscar) {
        DefaultTableModel temp = (DefaultTableModel) tablaFichasPodo.getModel();
        for (int i = 0; i < temp.getRowCount(); i++) {
            if (!contienePalabra(buscar, temp, i)) {
                temp.removeRow(i);
                i--;
            }

        }
    }

    /**
     * @method que se encarga de buscar si una palabra buscada esta dentro de una columna de la tabla
     * @param buscar
     * @param temp
     * @param fila
     * @return
     */
    public boolean contienePalabra(String buscar, DefaultTableModel temp, int fila) {
        int coincidencias = 0;
        int j = 0;
        String buscarAux = buscar.toUpperCase();
        if (temp.getColumnName(0).equals("ID")) {
            j++;
        }
        for (int i = j; i < temp.getColumnCount(); i++) {
            String frase = (String) temp.getValueAt(fila, i);
            if ((frase.toUpperCase()).contains(buscarAux)) {
                coincidencias += 1; // existe una columna que coincide con la palabra buscada
            }
        }
        if (coincidencias == 0) {
            return false; // no existen coincidencias
        } else {
            return true;
        }
    }
    
    private void tablaFichasPodoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tablaFichasPodoMouseClicked
        // TODO add your handling code here:
        DefaultTableModel modelo = (DefaultTableModel) this.tablaFichasPodo.getModel();
        int fila = this.tablaFichasPodo.rowAtPoint(evt.getPoint());
        if ((fila > -1) && evt.getClickCount() == 2) {
            this.normalizarMensajeria();
            int[] filasSelec = tablaFichasPodo.getSelectedRows();
            if (filasSelec.length == 1) {
                fichaPodo = new FichaPodologa(null, true, this);
                fichaPodo.limpiarFormularioPodo();
                fichaPodo.setTitle("Ver Ficha Podologia");
                fichaPodo.configurarBotones("imprimir");
                //Solo puede seleccionar una fila de la tabla de fichas principal
                fila = filasSelec[0];
                service.FichaPodologa ficha = buscarFicha((Long) this.tablaFichasPodo.getValueAt(fila, 0));
                /*se guarda el Id para saber que ficha clinica debo modificar
                en la base de datos*/
                fichaPodo.id = (Long) this.tablaFichasPodo.getValueAt(fila, 0);
                fichaPodo.llenarFormularioPodoModificar(ficha);
                fichaPodo.habilitarCamposFormularioPodo(false);
                fichaPodo.habilitarCamposEvolucion(true);
                //llenar datos evoluciones
                fichaPodo.limpiarTablaEvoluciones();
                fichaPodo.llenardatosEvoluciones((Long) this.tablaFichasPodo.getValueAt(fila, 0));
                fichaPodo.ocultarAsteriscosFormulario(true);
                fichaPodo.setSize(1105, 530);
                fichaPodo.setLocationRelativeTo(null);
                fichaPodo.setVisible(true);
            } else {
                this.etiquetaMensajeria.setText("Debe seleccionar solo una fila.");
                etiquetaMensajeria.setForeground(Color.red);
            }
        }
    }//GEN-LAST:event_tablaFichasPodoMouseClicked

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonEliminar;
    private javax.swing.JButton botonModificar;
    private javax.swing.JButton botonNoEliminar;
    private javax.swing.JButton botonSiEliminar;
    private javax.swing.JButton botonVer;
    private javax.swing.JTextField datosABuscar;
    private javax.swing.JDialog dialogoEliminarFicha;
    private javax.swing.JLabel etiquetaEliminar;
    public javax.swing.JLabel etiquetaMensajeria;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane4;
    public javax.swing.JTable tablaFichasPodo;
    // End of variables declaration//GEN-END:variables

    public void cargarFichas(java.util.List<service.FichaPodologa> fi) {
        String profesional = Login.getUser().getRut();
        this.limpiarTabla();
        java.util.List<service.FichaPodologa> fichas = fi;
        int i = 0;
        for (service.FichaPodologa p : fichas) {
            //cargar las fichas clinicas del profesional que ha ingresado al sistema
            if (p.isActivo() && p.getProfesional().equals(profesional)) {
                this.agregarFila();
                tablaFichasPodo.setValueAt(p.getId(), i, 0);
                tablaFichasPodo.setValueAt(p.getPaciente(), i, 1);
                service.Paciente pro= (service.Paciente) cargarPaciente(p.getPaciente());
                tablaFichasPodo.setValueAt(pro.getNombres()+" "+pro.getApellidoPaterno()+" "+pro.getApellidoMaterno(), i, 2);
                tablaFichasPodo.setValueAt(p.getNumeroCalzado(), i, 3);
                tablaFichasPodo.setValueAt(p.getMedicamentos(), i, 4);
                i++;
            }
        }
    }
    
    private static Object cargarPaciente(java.lang.String rut) {
        service.PacienteWS_Service service = new service.PacienteWS_Service();
        service.PacienteWS port = service.getPacienteWSPort();
        return port.cargarPaciente(rut);
    }
    
    public void cargarTodasLasFichas(java.util.List<service.FichaPodologa> fi) {
        this.limpiarTabla();
        java.util.List<service.FichaPodologa> fichas = fi;
        int i = 0;
        for (service.FichaPodologa p : fichas) {
            //cargar las fichas clinicas del profesional que ha ingresado al sistema
            if (p.isActivo()) {
                this.agregarFila();
                tablaFichasPodo.setValueAt(p.getId(), i, 0);
                tablaFichasPodo.setValueAt(p.getPaciente(), i, 1);
                service.Paciente pro= (service.Paciente) cargarPaciente(p.getPaciente());
                tablaFichasPodo.setValueAt(pro.getNombres()+" "+pro.getApellidoPaterno()+" "+pro.getApellidoMaterno(), i, 2);
                tablaFichasPodo.setValueAt(p.getNumeroCalzado(), i, 3);
                tablaFichasPodo.setValueAt(p.getMedicamentos(), i, 4);
                i++;
            }
        }
    }

    public void limpiarTabla() {
        DefaultTableModel temp = (DefaultTableModel) tablaFichasPodo.getModel();
        for (int i = tablaFichasPodo.getRowCount() - 1; i >= 0; i--) {
            temp.removeRow(i);
        }
    }

    public void agregarFila() {
        DefaultTableModel temp = (DefaultTableModel) tablaFichasPodo.getModel();
        Object nuevo[] = {"", "", "", ""};
        temp.addRow(nuevo);
    }

    private static java.util.List<service.FichaPodologa> listarFichasPodo() {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();
        return port.listarFichasPodo();
    }

    public void normalizarMensajeria() {
        etiquetaMensajeria.setText("");
        etiquetaMensajeria.setForeground(Color.black);
    }

    public service.FichaPodologa buscarFichaPodologa(Long fichaPodo) {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();

        java.util.List<service.FichaPodologa> fichasPodo = port.listarFichasPodo();
        //buscar paciente por el rut
        for (int i = 0; i < fichasPodo.size(); i++) {
            if (fichasPodo.get(i).getId().equals(fichaPodo)) {
                return fichasPodo.get(i);
            }
        }
        return null;
    }

    public Long agregarFichaPodologaBD(String paciente, String profesional, boolean calzadoAdecuado,
            boolean problemaOrto, boolean caminaAyuda, boolean diabetesM, boolean hta, boolean ulceracion,
            boolean amputacion, boolean alergias, boolean varices, boolean enfermedadesCro,
            String calzado, String medicamentos, boolean activo) {

        try { // Llamar al Web Service
            service.FichaPodologaWSService service = new service.FichaPodologaWSService();
            service.FichaPodologaWS port = service.getFichaPodologaWSPort();
            // TODO process result here
            Long idFicha = port.agregarFichaPodologa(paciente, profesional, calzadoAdecuado, problemaOrto,
                    caminaAyuda, diabetesM, hta, ulceracion, amputacion, alergias, varices, enfermedadesCro, calzado, medicamentos, activo);
            return idFicha;
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
        return null;


    }

    public void modificarFichaPodoBD(Long id, String paciente, String profesional, boolean calzadoAdecuado, boolean problemaOrto,
            boolean caminaAyuda, boolean diabetesM, boolean hta, boolean ulceracion, boolean amputacion,
            boolean alergias, boolean varices, boolean enfermedadesCro, String calzado, String tratamiento, boolean activo) {
        try {
            service.FichaPodologaWSService service = new service.FichaPodologaWSService();
            service.FichaPodologaWS port = service.getFichaPodologaWSPort();
            boolean resultado = port.modificarFichaPodologa(id, paciente, profesional, calzadoAdecuado, problemaOrto,
                    caminaAyuda, diabetesM, hta, ulceracion, amputacion, alergias, varices, enfermedadesCro, calzado,
                    tratamiento, activo);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }

    }

    private static Object cargarFichaPodologa(java.lang.Long id) {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();
        return port.cargarFichaPodo(id);
    }

    public boolean modificarFicha(service.FichaPodologa ficha) {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();
        return port.modificarFichaPodo(ficha);
    }

    public service.FichaPodologa buscarFicha(Long fichaKine) {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();

        java.util.List<service.FichaPodologa> fichasPodo = port.listarFichasPodo();
        //buscar paciente por el rut
        for (int i = 0; i < fichasPodo.size(); i++) {
            if (fichasPodo.get(i).getId().equals(fichaKine)) {
                return fichasPodo.get(i);
            }
        }
        return null;
    }

    private static java.util.List<service.FichaPodologa> filtrarFichasPodologa(java.lang.String buscar) {
        service.FichaPodologaWSService service = new service.FichaPodologaWSService();
        service.FichaPodologaWS port = service.getFichaPodologaWSPort();
        return port.filtrarFichasPodologa(buscar);
    }

    private static Object cargarPrivilegios(java.lang.String rut) {
        service.PrivilegiosWS_Service service = new service.PrivilegiosWS_Service();
        service.PrivilegiosWS port = service.getPrivilegiosWSPort();
        return port.cargarPrivilegios(rut);
    }

    private static Long registrar(service.Usuario usuario, java.lang.String modulo, java.lang.String accion, java.lang.String valorAnterior, java.lang.String valorNuevo) {
        service.BitacoraWSService service = new service.BitacoraWSService();
        service.BitacoraWS port = service.getBitacoraWSPort();
        return port.registrar(usuario, modulo, accion, valorAnterior, valorNuevo);
    }
    
    private void ocultarNumeroFicha() {
        tablaFichasPodo.getColumnModel().getColumn(0).setMaxWidth(0);
        tablaFichasPodo.getColumnModel().getColumn(0).setMinWidth(0);
        tablaFichasPodo.getColumnModel().getColumn(0).setPreferredWidth(0);
    }
}
